Pegando carona no texto anterior sobre “Conceitos Básicos de Orientação a Objetos — Parte 1”, vamos agora explorar mais alguns tópicos de interesse.
- Classe Abstrata
Classes abstratas são classes que servem como modelo para suas subclasses. Classes abstratas não podem ser instanciadas, apenas herdadas.
Os métodos declarados na classe abstrata devem ser implementados nas subclasses (classes concretas). Caso contrário, as subclasses também acabam se tornando classes abstratas. - Método Abstrato
São métodos presentes apenas em classes abstratas e que não possuem implementação.
![](https://cdn-images-1.medium.com/max/800/1*dKu1TLYh5ZqiI6KAXED-XQ.png)
- Associação
Associação representa um relacionamento entre os objetos, quando uma classe possui atributos de outra classe. Uma associação pode definir sua cardinalidade e sentido. É identificado pela frase “Tem um(a)”.
![](https://cdn-images-1.medium.com/max/800/1*NKuQKzGeBd-EvP4TrhpSVw.png)
- Composição
É um tipo de associação do tipo Todo x Partes, onde o todo é composto por suas partes (relação de contenção). Na composição, não faz sentido a existência das partes sem uma classe principal para contê-las.
![](https://cdn-images-1.medium.com/max/800/1*R3-8L2TXoApiBF0Y197YYA.png)
- Agregação
Outro tipo de associação, onde uma classe faz parte de outra (sem relação de contenção). A classe principal usa outras classes, sem contê-las. Ao contrário da composição, as classes podem existir sendo independentes.
![](https://cdn-images-1.medium.com/max/800/1*2pw3Jr1SOENCMDN_Oq1VqA.png)
- Interfaces x Classes Abstratas
Interfaces:
* Não podem ser instanciadas;
* Possuem métodos declarados sem implementação;
* Todos os atributos são públicos, estáticos e finais;
* Todos os métodos são públicos;
* Uma classe pode implementar diversas interfaces.
Classes Abstratas:
* Não podem ser instanciadas;
* Possuem métodos declaradas com ou sem implementação;
* Pode possuir atributos que não são estáticos e finais;
* Pode possuir métodos concretos que são públicos, protegidos e privados;
* Uma classe pode herdar apenas de 1 classe (abstrata ou não).
Este artigo foi originalmente publicado em: https://medium.com/@RafaelSermenho/conceitos-b%C3%A1sicos-de-orienta%C3%A7%C3%A3o-a-objetos-parte-2-5accfe670a6e